package io.dcloud.uniplugin

object DataConverter {
    // 字符串转字节数组
    fun stringToBytes(data: String): ByteArray = data.toByteArray()

    // 十六进制字符串转字节数组
    fun hexToBytes(hex: String): ByteArray {
        val len = hex.length
        val data = ByteArray(len / 2)
        var i = 0
        while (i < len) {
            data[i / 2] = ((Character.digit(hex[i], 16) shl 4) + Character.digit(hex[i+1], 16)).toByte()
            i += 2
        }
        return data
    }

    // Base64字符串转字节数组
    fun base64ToBytes(base64: String): ByteArray {
        return android.util.Base64.decode(base64, android.util.Base64.DEFAULT)
    }

    // 字节数组转字符串
    fun bytesToString(bytes: ByteArray): String = String(bytes)

    // 字节数组转十六进制字符串
    fun bytesToHex(bytes: ByteArray): String {
        val result = StringBuilder(bytes.size * 2)
        for (byte in bytes) {
            result.append(String.format("%02X", byte))
        }
        return result.toString()
    }

    // 字节数组转Base64字符串
    fun bytesToBase64(bytes: ByteArray): String {
        return android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT)
    }
}